// 导入 express
const express = require('express')
// 创建路由对象
const router = express.Router()
// 导入数据库操作模块
const db = require('../db/index')
var moment = require('moment')
// 获取 所有公告信息
router.get('/noticeAll', (req, res) => {
  // 注意：为了防止公告的密码泄露，需要排除 password 字段
  const sql = `select * from notices`

  db.query(sql, (err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.cc(err + 'sql语句执行失败')

    // 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1
    if (results.length < 1) return res.cc('获取公告信息失败！')
    results.forEach((item) => {
      item.datetime = moment(item.datetime).format('YYYY-MM-DD HH:mm:ss')
    })
    // 3. 将公告信息响应给客户端
    res.send({
      code: 200,
      message: '获取全部公告基本信息成功！',
      data: results,
      total: results.length,
    })
  })
})
// 根据id获取订单的基本信息
router.get('/notice/:id', (req, res) => {
  console.log(req.params, '222222222')
  // 根据订单的 id，查询订单的基本信息
  // 注意：为了防止订单的密码泄露，需要排除 password 字段
  const sql = `select * from notices where id=?`
  // 注意：req 对象上的 notice_ 属性，是 Token 解析成功，express-jwt 中间件帮我们挂载上去的
  db.query(sql, req.params.id, (err, results) => {
    // 1. 执行 SQL 语句失败
    if (err) return res.cc(err)

    // 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1
    if (results.length !== 1) return res.cc('获取订单信息失败！')

    // 3. 将订单信息响应给客户端
    res.send({
      code: 200,
      message: '获取订单基本信息成功！',
      data: results[0],
    })
  })
})
// 根据id删除公告信息
router.delete('/notice/:id', (req, res) => {
  // 定义根据 id 删除公告数据的 SQL 语句
  const sql = `delete from notices where id=?`
  db.query(sql, req.params.id, (err, results) => {
    // 执行 SQL 语句失败
    if (err) return res.cc(err.message)
    // SQL 语句执行成功，但影响行数不为 1
    if (results.affectedRows !== 1) {
      // return res.send({ code: 400, message: '添加公告失败，请稍后再试！' })
      return res.cc('删除公告失败，请稍后再试！')
    }

    // 删除成功
    res.send({
      code: 200,
      message: '删除公告信息成功！',
    })
  })
})

// 更新公告信息
router.post('/notcie/:id', (req, res) => {
  const sql = `update notices set ? where id=?`
  console.log(req.params, ',,,,,,,,,,,,,,,')
  console.log(req.body, '................')
  req.body.datetime = moment(req.body.datetime).format('YYYY-MM-DD HH:mm:ss')
  // req.body.status = req.body.status == '送达' ? 0 : 1

  db.query(sql, [req.body, req.params.id], (err, results) => {
    // 执行 SQL 语句失败
    if (err) return res.cc(err)

    // 执行 SQL 语句成功，但影响行数不为 1
    if (results.affectedRows !== 1) return res.cc('修改公告基本信息失败！')

    // 修改公告信息成功
    res.send({
      code: 200,
      message: '修改公告基本信息成功！',
    })
  })
})

// 添加公告信息
router.post('/addnotcie', (req, res) => {
  console.log(req.body, 'add|add')
  // 接收表单数据
  const info = req.body
  console.log(info, '+++++++++++++++')

  info.datetime = moment(info.datetime).format('YYYY-MM-DD HH:mm:ss')
  // console.log(info, '6666666666666')
  const sql = 'insert into notices set ?'
  db.query(sql, info, function (err, results) {
    // 执行 SQL 语句失败
    if (err) return res.send({ code: 400, message: err.message })
    // SQL 语句执行成功，但影响行数不为 1
    if (results.affectedRows !== 1) {
      return res.send({
        code: 400,
        message: '添加公告信息失败，请稍后再试！',
      })
    }
    // 添加成功
    res.send({ code: 200, message: '添加公告信息成功！' })
  })
})

// 向外共享路由对象
module.exports = router
